package com.ruyuan.rapid.common.concurrent.queue.flusher;

/**
 * Flusher接口定义
 * @author mac
 */
public interface Flusher<E> {

    /**
     * 添加一个元素
     * @param event
     */
    void add(E event);

    /**
     * 添加多个元素
     * @param event
     */
    void add(E... event);

    /**
     * 尝试添加一个元素,如果添加成功返回true,失败返回false
     * @param events
     * @return
     */
    boolean tryAdd(E events);

    /**
     * 尝试添加多个元素
     * @param events
     * @return
     */
    boolean tryAdd(E... events);

    /**
     * 判断是否停止
     * @return
     */
    boolean isShutdown();

    void start();

    void shutdown();
}
